import request from '@/utils/request'

/**
 * 获取考试列表
 * @param {Object} query 查询参数
 * @returns {Promise} 请求结果
 */
export function getExamList(query) {
  return request({
    url: '/api/exams/list',
    method: 'get',
    params: query
  })
}

/**
 * 获取考试详情
 * @param {Number} id 考试ID
 * @param {Boolean} forTaking 是否为正在进行的考试
 * @returns {Promise} 请求结果
 */
export function getExamDetail(id, forTaking = false) {
  return request({
    url: `/api/exams/${id}`,
    method: 'get',
    params: { forTaking }
  })
}

/**
 * 提交考试
 * @param {Object} data 考试数据
 * @returns {Promise} 请求结果
 */
export function submitExam(data) {
  return request({
    url: '/api/exams/submit',
    method: 'post',
    data
  })
}

/**
 * 获取考试结果
 * @param {Number} id 考试结果ID
 * @returns {Promise} 请求结果
 */
export function getExamResult(id) {
  return request({
    url: `/api/exams/result/${id}`,
    method: 'get'
  })
}

/**
 * 下载考试结果
 * @param {Number} id 考试结果ID
 * @returns {Promise} 请求结果
 */
export function downloadExamResult(id) {
  return request({
    url: `/api/exams/result/${id}/download`,
    method: 'get',
    responseType: 'blob'
  })
}

/**
 * 添加考试
 * @param {Object} data 考试数据
 * @returns {Promise} 请求结果
 */
export function addExam(data) {
  return request({
    url: '/api/exams/add',
    method: 'post',
    data
  })
}

/**
 * 更新考试
 * @param {Number} id 考试ID
 * @param {Object} data 考试数据
 * @returns {Promise} 请求结果
 */
export function updateExam(id, data) {
  const updatedData = { ...data, id };
  return request({
    url: '/api/exams/update',
    method: 'put',
    data: updatedData
  })
}

/**
 * 删除考试
 * @param {Number} id 考试ID
 * @returns {Promise} 请求结果
 */
export function deleteExam(id) {
  return request({
    url: `/api/exams/${id}`,
    method: 'delete'
  })
}

/**
 * 获取考试结果列表
 * @param {Object} query 查询参数
 * @returns {Promise} 请求结果
 */
export function getExamResultList(query) {
  return request({
    url: '/api/exams/results',
    method: 'get',
    params: query
  })
}

/**
 * 更新考试状态（系统自动调用，根据时间更新考试状态）
 * @returns {Promise} 请求结果
 */
export function updateExamStatus() {
  return request({
    url: '/api/exams/status/update',
    method: 'post'
  })
}

/**
 * 获取考试结果详情
 * @param {Number} id 考试结果ID
 * @returns {Promise} 请求结果
 */
export function getExamResultDetail(id) {
  return request({
    url: `/api/exams/results/${id}`,
    method: 'get'
  })
}

/**
 * 提交考试答案
 * @param {Number} examId 考试ID
 * @param {Object} data 答案数据
 * @returns {Promise} 请求结果
 */
export function submitExamAnswers(examId, data) {
  return request({
    url: `/api/exams/${examId}/submit`,
    method: 'post',
    data
  })
} 